#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define PORT 10000 		/* Server的端口 */
#define MAXDATASIZE 100	/*一次可以读的最大字节数 */

int main1()
{
	int meminfo();
	int a;
	a=meminfo();
	printf("%d\n",a);
	return 0;
}

int main(int argc, char *argv[])
{
	
	//int cpu();
	int meminfo();
	char u[100];
	int num;
	//num=cpu();
	num=meminfo();
	
	sprintf(u,"%d",num);
	
	int sockfd, numbytes;
	char buf[MAXDATASIZE];
	char buf1[8]="goodbye";
	struct hostent *he;		/* 主机信息 */
	struct sockaddr_in their_addr; 	/* 对方地址信息 */

	
	if (argc != 2) {
		fprintf(stderr,"usage: client hostname\n");
		exit(1);
	}
	if ((he=gethostbyname(argv[1])) == NULL) { 
		/* get the host info */
		herror("gethostbyname");
		exit(1);
	}

	if ((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) {
		perror("socket");
		exit(1);
	}

	their_addr.sin_family = AF_INET; 
	their_addr.sin_port = htons(PORT); 		/* short, NBO */
	their_addr.sin_addr = *((struct in_addr *)he->h_addr);
	bzero(&(their_addr.sin_zero), 8); 		/* 其余部分设成0 */

	if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) {
		perror("connect");
		exit(1);
	}
	
	printf("sending\n");
	while(1)
	{	
		num=meminfo();
		sprintf(u,"%d",num); 
		
		
		if(send(sockfd,u,sizeof(u),0)==-1) perror("send");
		printf("%s\n",u);
		sleep(1);
		
		
	}
	close(sockfd);
	
	return 0;
}
int meminfo()
{
	FILE *fp;
	char mem[10];
	double meminfo[2];
	float mem_rate;
	int a;
	char text[1024];
	
//while(1)
//{
	fp=fopen("/proc/meminfo","r");
	int index=0;
	
	while(!feof(fp))
	{
		if(index<2)
		{		
			fgets(text,1024,fp);	
	
			sscanf(text,"%s %lf\n",mem,&meminfo[index]);
			
			index++;
		}
		else break;
		
	}
	fclose(fp);
	//printf("%s\n",mem);
	//printf("%lf %lf\n",meminfo[0],meminfo[1]);
	mem_rate=(1-meminfo[1]/meminfo[0])*100;
	a=mem_rate;
	//printf("%d\n",a);
	//sleep(1);
//}
	return (a);
}
